A processor (such as a microprocessor) processes instructions according to an architecture of the processor, the instructions having a format defined by an instruction set architecture portion of the architecture. The processing includes fetching, decoding, issuing, and executing the instructions. Some processors directly execute instructions, whereas other processors translate instructions into internal operations (sometimes called micro-operations) and execute operations that perform an equivalent function to the instructions. In processors translating instructions, conceptually the instructions are considered to be underlying the internal operations.
Some instruction set architectures (such as an X86-compatible instruction set architecture) include complex instructions. Some microprocessor implementations include translation hardware to convert instructions (including complex instructions) into sequences of one or more relatively simpler operations, referred to as micro-operations. Additionally, certain implementations store sequences of micro-operations that correspond to one or more instructions in a cache, such as a trace cache. For example, Intel's Pentium 4 microprocessor, as described by Hinton, et al (in “The Microarchitecture of the Pentium 4 Processor”, Intel Technology Journal, Q1, 2001), has a trace cache.
One issue in some processor systems is difficulty of achieving user-control over the precise semantics of instruction execution. For example, asynchronous events such as non-maskable interrupts, system-management interrupts, power-management interrupts, and I/O interrupts are enabled to temporarily disrupt the normal program flow. A lack of atomic sequences of execution has multiple consequences. First, programs wishing to do accurate timing or tracing are not able to rely on even short sequences of instructions taking a predictable time due to asynchronous events that temporarily disrupt normal program flow. Second, in some usage scenarios and with some code sequences, such as those doing state-switching, an asynchronous event induces a failure.
All of the foregoing patents and references are hereby incorporated by reference for all purposes.